/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import BD.Tabla;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import nivelPersistencia.PersistenciaException;
import objetosNegocio.Arrendador;
import objetosNegocio.Residente;

/**
 *
 * @author Christian
 */
public class Residentes extends Tabla {

    private String nombreTabla;

    public Residentes(String nombreTabla) {
        super(nombreTabla);
        this.nombreTabla = nombreTabla;
    }

    public void addResidente(Residente r) throws PersistenciaException {
        String s = "INSERT INTO " + nombreTabla + " VALUES("
                + Integer.parseInt(r.getIdResidente()) + ", '" + r.getNombre() + "', '"
                + r.getApellido() + "', '" + r.getSexo() + "', '"
                + r.getDireccion() + "', '" + r.getTelefono() + "', '"
                + r.getCelular() + "', " + r.getCiudad() + ", "
                + r.getEstado() + ", " + r.getPais() + ", '"
                + r.getEmail() + "', " + r.getCarrera() + ", "
                + r.getArrendador().getIdArrendador() + ", '"
                + r.getFecha() + "');";
        System.out.println(s);
        actualiza(s);
    }

    public Residente getResidente(Residente residente) throws PersistenciaException {
        String s = "SELECT * FROM " + nombreTabla + " WHERE idResidente = " + residente.getIdResidente() + ";";
        consulta(s);
        ResultSet rs;
        while ((rs = obtenRenglon()) != null) {
            try {
                Residente r = new Residente(String.valueOf(rs.getInt("idResidente")),
                        rs.getString("nombre"), rs.getString("apellido"), rs.getString("direccion"),
                        rs.getString("telefono"), rs.getString("celular"), rs.getString("email"),
                        rs.getInt("ciudad"), rs.getInt("estado"), rs.getInt("pais"),
                        rs.getInt("carrera"), rs.getString("sexo"),
                        new Arrendador(rs.getInt("arrendador")), rs.getDate("fecha_nacimiento").toString());
                return r;
            } catch (SQLException ex) {
                throw new PersistenciaException("Error al agregar el residente.");
            }
        }
        return null;
    }

    public void updateResidente(Residente r) throws PersistenciaException {
        String s = "UPDATE " + nombreTabla + " SET "
                + "nombre = '" + r.getNombre() + "', "
                + "apellido = '" + r.getApellido() + "', "
                + "sexo = '" + r.getSexo() + "', "
                + "direccion = '" + r.getDireccion() + "', "
                + "telefono = '" + r.getTelefono() + "', "
                + "celular = '" + r.getCelular() + "', "
                + "ciudad = " + r.getCiudad() + ", "
                + "estado = " + r.getEstado() + ", "
                + "pais = " + r.getPais() + ", "
                + "email = '" + r.getEmail() + "', "
                + "carrera = " + r.getCarrera() + ", "
                + "arrendador = " + r.getArrendador().getIdArrendador() + " "
                + "WHERE idResidente = " + Integer.parseInt(r.getIdResidente()) + ";";
        actualiza(s);
    }

    /*public void updateMetodoPagoResidente(Residente r, String nuevoTipo) throws PersistenciaException {
        String s = "UPDATE FROM " + nombreTabla + " SET tipoMetodoPago = '" + nuevoTipo + "'"
                + " WHERE idResidente = " + Integer.parseInt(r.getIdResidente()) + ";";
        System.out.println(s);
        actualiza(s);
    }*/
    
    public void deleteResidente(Residente residente) throws PersistenciaException {
        String s = "DELETE FROM " + nombreTabla + " WHERE idResidente = " + Integer.parseInt(residente.getIdResidente()) + ";";
        actualiza(s);
    }

    public List<Residente> listOfResidentes() throws PersistenciaException {
        List<Residente> lista = new ArrayList<Residente>();
        String s = "SELECT * FROM " + nombreTabla + ";";
        consulta(s);
        ResultSet rs;
        while ((rs = obtenRenglon()) != null) {
            Residente r;
            try {
                r = new Residente(String.valueOf(rs.getInt("idResidente")),
                        rs.getString("nombre"), rs.getString("apellido"), rs.getString("direccion"),
                        rs.getString("telefono"), rs.getString("celular"), rs.getString("email"),
                        rs.getInt("ciudad"), rs.getInt("estado"), rs.getInt("pais"),
                        rs.getInt("carrera"), rs.getString("sexo"),
                        new Arrendador(rs.getInt("arrendador")), rs.getDate("fecha_nacimiento").toString());
                lista.add(r);
            } catch (SQLException ex) {
                throw new PersistenciaException("Error al general lista de los residente.");
            }
        }
        return lista;
    }
}